/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package net.etrs.formathlon.entity.formation;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import net.etrs.formathlon.entity.utils.ComparableEvenThoughUnpersisted;

/**
 * Entité symbolisant le nombre et la durée que devra posseder les futures 
 * sessions d'une formation.
 * @author OPIF
 */
@Entity
public class SeanceTh extends ComparableEvenThoughUnpersisted<SeanceTh> {
    
    private static final long serialVersionUID = 1L;
    
    /**
     * Identifiant.
     */
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    /**
     * Fixe la durée d'une séance.
     */
    private int duree;
    /**
     * Dans le cas de séance ayant des durées différentes,
     * précise le nombre de séances qui auront la durée précédemment déclarée.
     */
    private int nombre;
    
    /**
     * formation rattaché aux séances théoriques.
     */
    @ManyToOne
    private Formation formation;
    
    /**
     * Attribut technique remplacant la suppression.
     */
    private boolean archive;

    /**
     * Constructeur par défaut
     */
    public SeanceTh() {
        this.duree = 1;
        this.nombre = 1;
    }

    @Override
    public Long getId() {
        return id;
    }

    /**
     * Setter de l'id.
     * @param id 
     */
    public void setId(Long id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return String.format("Seance Th id=%d", id);
    }

    /**
     * @return the duree
     */
    public int getDuree() {
        return duree;
    }

    /**
     * @param duree the duree to set
     */
    public void setDuree(int duree) {
        this.duree = duree;
    }

    /**
     * @return the nombre
     */
    public int getNombre() {
        return nombre;
    }

    /**
     * @param nombre the nombre to set
     */
    public void setNombre(int nombre) {
        this.nombre = nombre;
    }

    /**
     * @return the formation
     */
    public Formation getFormation() {
        return formation;
    }

    /**
     * @param formation the formation to set
     */
    public void setFormation(Formation formation) {
        this.formation = formation;
    }

    /**
     * @return the archive
     */
    @Override
    public boolean isArchive() {
        return archive;
    }

    /**
     * @param archive the archive to set
     */
    @Override
    public void setArchive(boolean archive) {
        this.archive = archive;
    }
    
}
